package LeetCode.LC647;

/**
 * @author corn
 * @create 2020-07-24-22:32
 */

/**
 * 647. 回文子串
 * 给定一个字符串，你的任务是计算这个字符串中有多少个回文子串。
 * 具有不同开始位置或结束位置的子串，即使是由相同的字符组成，也会被计为是不同的子串。
 *
 */
public class CountSubstrings {
    public static void main(String[] args) {
        Solution sol = new Solution();
        String s = "abcbddb";
        System.out.println(sol.countSubstrings(s));
    }
}
class Solution {
    private int num = 0;
    public int countSubstrings(String s) {
        for (int i=0; i < s.length(); i++){
            //从中间向两边扩散
            //abcbddb
            count(s, i, i);//回文串长度为奇数
            //c --> bcb
            count(s, i, i+1);//回文串长度为偶数
            //d --> dd --> bddb
        }
        return num;
    }

    public void count(String s, int start, int end){
        while(start >= 0 && end < s.length() && s.charAt(start) == s.charAt(end)){
            num++;
            start--;
            end++;
        }
    }
}
